package net.vmiranda.jeds.web.auth;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.vmiranda.jeds.core.usuarios.Usuario;
import net.vmiranda.jeds.core.usuarios.UsuariosManager;

public class LoginFilter implements Filter {

	public void destroy() {}
	public void init(FilterConfig arg0) throws ServletException {}
	
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {

		    if (req instanceof HttpServletRequest){		    	
		        if (loginOk(req,res)) {
		            chain.doFilter(req, res);
		        } else {
		            ((HttpServletResponse)res).sendRedirect(((HttpServletRequest)req).getContextPath() + "/login.jsf");
		        }
		    }		
	}
	
	private boolean loginOk(ServletRequest req,ServletResponse res) throws IOException{
		HttpSession  session = ((HttpServletRequest)req).getSession();
		String requestUri = ((HttpServletRequest)req).getRequestURI();
		
		//comprobar que la requestUri no sea la del login, pq si lo es el login aun puede estar bien
		if(requestUri.contains("/login.jsf")){		
			return true;
		}
		Usuario usuarioActual = (Usuario)session.getAttribute("usuarioActual");
		if(usuarioActual == null) {
			//Solo en desarrollo, se deberia devolver false, esta asi para no tener que autenticarme.
			usuarioActual = new UsuariosManager().usuario("morello.jeds@gmail.com", "jedsmorello");
			session.setAttribute("usuarioActual", usuarioActual);
			return true;
		}
	
        
		return true;
	}

	

}
